/**
 * 文件管理工具类
 */
const FileManager = {
  /**
   * 删除文件
   * @param {String} filePath 文件路径
   * @returns {Promise} 删除结果
   */
  deleteFile: function(filePath) {
    return new Promise((resolve, reject) => {
      console.log('准备删除文件:', filePath);
      
      if (!filePath) {
        console.error('文件路径为空');
        reject(new Error('文件路径为空'));
        return;
      }
      
      const fs = wx.getFileSystemManager();
      
      // 检查文件是否存在
      fs.access({
        path: filePath,
        success: () => {
          // 文件存在，执行删除
          fs.unlink({
            filePath: filePath,
            success: () => {
              console.log('文件删除成功:', filePath);
              resolve(true);
            },
            fail: (err) => {
              console.error('文件删除失败:', err);
              reject(err);
            }
          });
        },
        fail: (err) => {
          console.error('文件不存在或无法访问:', err);
          // 文件不存在也算删除成功
          resolve(false);
        }
      });
    });
  },
  
  /**
   * 批量删除文件
   * @param {Array} filePaths 文件路径数组
   * @returns {Promise} 删除结果
   */
  batchDeleteFiles: function(filePaths) {
    if (!filePaths || filePaths.length === 0) {
      return Promise.resolve([]);
    }
    
    console.log('准备批量删除文件，数量:', filePaths.length);
    
    const promises = filePaths.map(path => this.deleteFile(path));
    return Promise.all(promises);
  },
  
  /**
   * 清理临时文件
   * @returns {Promise} 清理结果
   */
  cleanTempFiles: function() {
    return new Promise((resolve, reject) => {
      console.log('准备清理临时文件');
      
      const fs = wx.getFileSystemManager();
      const tempDir = wx.env.USER_DATA_PATH;
      
      // 读取临时目录
      fs.readdir({
        dirPath: tempDir,
        success: (res) => {
          const files = res.files;
          console.log('临时目录文件数量:', files.length);
          
          // 过滤出图片和PDF文件
          const targetFiles = files.filter(file => {
            const ext = file.toLowerCase();
            return ext.endsWith('.jpg') || ext.endsWith('.jpeg') || 
                   ext.endsWith('.png') || ext.endsWith('.pdf');
          });
          
          console.log('需要清理的文件数量:', targetFiles.length);
          
          // 批量删除文件
          const deletePromises = targetFiles.map(file => {
            const fullPath = `${tempDir}/${file}`;
            return this.deleteFile(fullPath);
          });
          
          Promise.all(deletePromises)
            .then(results => {
              const successCount = results.filter(result => result).length;
              console.log(`临时文件清理完成，成功: ${successCount}/${targetFiles.length}`);
              resolve(successCount);
            })
            .catch(err => {
              console.error('清理临时文件失败:', err);
              reject(err);
            });
        },
        fail: (err) => {
          console.error('读取临时目录失败:', err);
          reject(err);
        }
      });
    });
  },
  
  /**
   * 保存文件到本地存储
   * @param {String} tempFilePath 临时文件路径
   * @returns {Promise} 保存结果，返回永久文件路径
   */
  saveFile: function(tempFilePath) {
    return new Promise((resolve, reject) => {
      console.log('准备保存文件:', tempFilePath);
      
      wx.saveFile({
        tempFilePath: tempFilePath,
        success: (res) => {
          console.log('文件保存成功:', res.savedFilePath);
          resolve(res.savedFilePath);
        },
        fail: (err) => {
          console.error('文件保存失败:', err);
          reject(err);
        }
      });
    });
  },
  
  /**
   * 批量保存文件
   * @param {Array} tempFilePaths 临时文件路径数组
   * @returns {Promise} 保存结果，返回永久文件路径数组
   */
  batchSaveFiles: function(tempFilePaths) {
    if (!tempFilePaths || tempFilePaths.length === 0) {
      return Promise.resolve([]);
    }
    
    console.log('准备批量保存文件，数量:', tempFilePaths.length);
    
    const promises = tempFilePaths.map(path => this.saveFile(path));
    return Promise.all(promises);
  }
};

module.exports = FileManager;